/** Klasse realisiert NOT-Gatter.
 *
 *  @brief Fachklasse: NOT-Gatter
 *
 *  @author Nico Mutter
 *  @date 19.05.2012
 *
 *  @version 0.1
 *  Doxygen Kommentare hinzugefuegt
 */

#ifndef TNotH
#define TNotH

#include "TGatter.h"
#include "OWLComps.hpp"

class TNot : public TGatter{
private:
public:

	/** Konstruktor von TNot.
	* @param[in] owner Gibt den Besitzer/Parent des Gatters an
	*/
	__fastcall TNot(TComponent* owner);

	/** Wird aufgerufen sobald sich ein Wert eines InputPins aendert.
	* \n Setzt den OutputPin = !value1.
	* @param[in] value1 Wert des 1. Eingangs
	* @param[in] value2 Wert des 2. Eingangs
	*/
	void __fastcall berechne(bool value1, bool value2);

	/** Gibt den gewuenschten Pin zurueck.
	* @param[in] pin Bestimmt welcher Pin zurueckgegeben werden soll
	* @return Erfolg: Referenz auf angeforderten Pin
	* \n Misserfolg: NULL
	*/
	TOWBasicPin* __fastcall getPin(Pin pin);

	/** Versucht die uebergebenen Pins zu verbinden.
	* @param[in] pin Pin der Klasse, welcher verbunden werden soll
	* @param[in] pinToConnectTo Pin zu dem die Verbindung aufgebaut werden soll
	* @return Erfolg: true \n
	*		  Misserfolg: false
	*/
	bool __fastcall connect(Pin pin, TOWBasicPin* pinToConnectTo);

	/** Trennt uebergebenen Pin mit allen mit ihm verbundenen Pins
	* @param[in] pin Pin welcher getrennt werden soll
	*/
	void __fastcall disconnect(Pin pin);
};
#endif
